/**
  @file     	DESIGNPATTERN_BridgeImp.cpp 
  @brief    	1.When the algorithm to create complex object should be independent of the part of the object, 
                  as well as their assembly;
				2.When construction process must be allowed to construct the object is different;
  @author  	arvin
  @version 	1.0   2012/12/20
 */

#include "stdafx.h"

#ifndef CXX_DESIGNPATTERN_BRIDGEIMP_H
#include "DESIGNPATTERN_BridgeImp.h"
#endif

/**
* Construction
*
* @param MANUFACTURER_TYPE eManufacturer
* @return 
*/
AbstractBridgeImp::AbstractBridgeImp(MANUFACTURER_TYPE eManufacturer) :
	m_eManufacturer(eManufacturer)
{
	DEBUG_PRINTF("m_eManufacturer[%d], Manufacturer[%s]", m_eManufacturer, STATIC_CONST_STRING_MANUFACTURER[m_eManufacturer].c_str());
}

/**
* Destruction
*
* @param VOID
* @return 
*/
AbstractBridgeImp::~AbstractBridgeImp()
{
	DEBUG_PRINTF("m_eManufacturer[%d], Manufacturer[%s]", m_eManufacturer, STATIC_CONST_STRING_MANUFACTURER[m_eManufacturer].c_str());
}

/**
* Operation
*
* @param VOID
* @return VOID
*/
VOID AbstractBridgeImp::Operation()
{
	DEBUG_PRINTF("m_eManufacturer[%d], Manufacturer[%s]", m_eManufacturer, STATIC_CONST_STRING_MANUFACTURER[m_eManufacturer].c_str());
}

/**
* SetManufacturer
*
* @param MANUFACTURER_TYPE eManufacturer
* @return
*/
VOID
AbstractBridgeImp::SetManufacturer(MANUFACTURER_TYPE eManufacturer)
{
	DEBUG_PRINTF("m_eManufacturer[%d], Manufacturer[%s]", m_eManufacturer, STATIC_CONST_STRING_MANUFACTURER[m_eManufacturer].c_str());
	m_eManufacturer = eManufacturer;
}

/**
* GetManufacturer
*
* @param VOID
* @return MANUFACTURER_TYPE
*/
MANUFACTURER_TYPE
AbstractBridgeImp::GetManufacturer()
{
	DEBUG_PRINTF("m_eManufacturer[%d], Manufacturer[%s]", m_eManufacturer, STATIC_CONST_STRING_MANUFACTURER[m_eManufacturer].c_str());
	return m_eManufacturer;
}

/**
* Construction
*
* @param VOID
* @return 
*/
DELLBridgeImp::DELLBridgeImp() :
	AbstractBridgeImp(MANUFACTURER_DELL)
{
	DEBUG_PRINTF("");
}

/**
* Destruction
*
* @param VOID
* @return
*/
DELLBridgeImp::~DELLBridgeImp()
{
	DEBUG_PRINTF("");
	AbstractBridgeImp::Operation();
}

VOID
DELLBridgeImp::Operation()
{
	DEBUG_PRINTF("");
}


/**
* Construction
*
* @param VOID
* @return
*/
ASUSBridgeImp::ASUSBridgeImp() :
	AbstractBridgeImp(MANUFACTURER_ASUS)
{
	DEBUG_PRINTF("");
}


/**
* Destruction
*
* @param VOID
* @return
*/
ASUSBridgeImp::~ASUSBridgeImp()
{
	DEBUG_PRINTF("");
}

VOID
ASUSBridgeImp::Operation()
{
	DEBUG_PRINTF("");
	AbstractBridgeImp::Operation();
}


/**
* Construction
*
* @param VOID
* @return
*/
HPBridgeImp::HPBridgeImp() :
	AbstractBridgeImp(MANUFACTURER_HP)
{
	DEBUG_PRINTF("");
}

/**
* Destruction
*
* @param VOID
* @return
*/
HPBridgeImp::~HPBridgeImp()
{
	DEBUG_PRINTF("");
}

VOID
HPBridgeImp::Operation()
{
	DEBUG_PRINTF("");
	AbstractBridgeImp::Operation();
}

/* EOF */